192.168.2.150 08:00:27:6f:88:89 PCS Systemtechnik GmbH
Analyse:** Der Befehl `arp-scan -l` wird ausgeführt, um das lokale Netzwerksegment mittels ARP-Anfragen nach aktiven Geräten zu durchsuchen.
**Bewertung:** Ein Host mit der IP-Adresse `192.168.2.150` wird identifiziert. Die MAC-Adresse (`08:00:27:...`) weist auf eine VirtualBox VM hin. Dies ist das Zielsystem.
**Empfehlung (Pentester):** Ziel-IP `192.168.2.150` notieren und mit Port-Scanning (Nmap) fortfahren.
**Empfehlung (Admin):** Standard-Netzwerkaufklärung. Fokus auf Absicherung der Dienste.
127.0.0.1 localhost
127.0.1.1 cyber
192.168.2.150 eighty.hmv
**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifers wird bearbeitet, um der Ziel-IP `192.168.2.150` den Hostnamen `eighty.hmv` zuzuweisen.
**Bewertung:** Erleichtert die Ansprache des Ziels in späteren Befehlen.
**Empfehlung (Pentester):** Verwenden Sie `eighty.hmv` in nachfolgenden Scans.
**Empfehlung (Admin):** Keine Aktion auf dem Zielsystem erforderlich.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-14 23:31 CEST <-- Datum extrahiert --> Nmap scan report for eighty.hmv (192.168.2.150) Host is up (0.00014s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: [...] 70/tcp open http pygopherd web-gopher gateway <-- Gopher Port! --> |_http-title: Gopher | gopher-ls: |_[txt] /howtoconnect.txt "Connection" <-- Hinweis! --> 80/tcp filtered http <-- HTTP gefiltert! --> MAC Address: 08:00:27:6F:88:89 (Oracle VirtualBox virtual NIC) [...] OS details: Linux 4.15 - 5.6 Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.14 ms eighty.hmv (192.168.2.150) Nmap done: 1 IP address (1 host up) scanned in X.XX seconds
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
70/tcp open http pygopherd web-gopher gateway [txt] /howtoconnect.txt
80/tcp filtered http <<----- filtered <-<<
<-- Redundante Zusammenfassung -->
**Analyse:** Ein umfassender Nmap-Scan (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-p-`) wird auf `192.168.2.150` (eighty.hmv) durchgeführt.
**Bewertung:** Drei Ports sind von besonderem Interesse: * **Port 22 (SSH):** OpenSSH 7.9p1 (Debian 10). Standard-Fernzugriff. * **Port 70 (Gopher):** Ein Gopher-Dienst (via `pygopherd` Gateway). Das Nmap-Skript `gopher-ls` findet eine Textdatei `howtoconnect.txt` im Wurzelverzeichnis des Gopher-Servers. Gopher ist ein älteres Protokoll, das heute selten verwendet wird; sein Vorhandensein ist ungewöhnlich. * **Port 80 (HTTP):** Wird als `filtered` angezeigt. Das bedeutet, Nmap konnte nicht feststellen, ob der Port offen oder geschlossen ist, typischerweise weil eine Firewall SYN-Pakete blockiert oder verwirft.
**Empfehlung (Pentester):**
1. **Gopher (Priorität 1):** Untersuchen Sie den Gopher-Dienst auf Port 70. Rufen Sie die gefundene Datei `/howtoconnect.txt` ab (z.B. mit `curl gopher://eighty.hmv/howtoconnect.txt` oder über das HTTP-Gateway, falls Port 70 HTTP spricht: `curl http://eighty.hmv:70/howtoconnect.txt`).
2. **Port 80 (Priorität 2):** Der gefilterte Status deutet möglicherweise auf Port Knocking oder eine Firewall hin, die nur bestimmte Zugriffe erlaubt. Halten Sie dies im Hinterkopf, falls die Gopher-Spur Hinweise liefert.
**Empfehlung (Admin):** Deaktivieren Sie den Gopher-Dienst, wenn er nicht benötigt wird. Konfigurieren Sie die Firewall (falls vorhanden), um den Zugriff auf Port 80 klar zu definieren (entweder erlauben oder blockieren).
Ping us to: 4767 2343 3142
**Analyse:** Die Datei `/howtoconnect.txt` wird über das HTTP-Interface des Gopher-Gateways auf Port 70 abgerufen.
**Bewertung:** Die Datei enthält eine klare Anweisung: "Ping us to: 4767 2343 3142". Dies ist ein **klassischer Hinweis auf Port Knocking**. Es müssen Pakete an diese drei Ports (in dieser Reihenfolge) gesendet werden, um wahrscheinlich Port 80 zu öffnen.
**Empfehlung (Pentester):** Führen Sie die Port-Knocking-Sequenz durch (z.B. mit `knock` oder `hping3`). Überprüfen Sie anschließend erneut den Status von Port 80 mit Nmap.
**Empfehlung (Admin):** Port Knocking ist eine Form von "Security through Obscurity" und bietet nur begrenzten Schutz. Verlassen Sie sich nicht darauf als primäre Sicherheitsmaßnahme. Wenn es verwendet wird, dokumentieren Sie die Sequenz sicher.
**Analyse:** Durchführung der Port-Knocking-Sequenz, die in `howtoconnect.txt` gefunden wurde, um Port 80 zu öffnen.
hitting tcp 192.168.2.150:4767 hitting tcp 192.168.2.150:2343 hitting tcp 192.168.2.150:3142
**Analyse:** Das Tool `knock` wird verwendet, um TCP-SYN-Pakete (Standard bei `knock`) nacheinander an die Ports 4767, 2343 und 3142 auf dem Zielsystem zu senden.
**Bewertung:** Die Sequenz wurde erfolgreich gesendet. Es wird erwartet, dass dies die Firewall-Regel für Port 80 auf dem Zielsystem geändert hat.
**Empfehlung (Pentester):** Überprüfen Sie den Status von Port 80 erneut.
**Empfehlung (Admin):** Keine.
HPING 192.168.2.150 (eth0 192.168.2.150): S set, 40 headers + 0 data bytes
len=46 ip=192.168.2.150 ttl=64 DF id=0 sport=4767 flags=RA seq=0 win=0 rtt=7.7 ms
[...]
hping3: you must specify only one target host at a time <-- Fehler durch ; Trennung? -->
[...]
HPING 192.168.2.150 (eth0 192.168.2.150): S set, 40 headers + 0 data bytes
len=46 ip=192.168.2.150 ttl=64 DF id=0 sport=3142 flags=RA seq=0 win=0 rtt=11.6 ms
[...]
**Analyse:** Hier wird versucht, die Knocking-Sequenz manuell mit `hping3` durchzuführen, indem SYN-Pakete (`-S`) an die drei Ports gesendet werden. Die Befehle werden mit Semikolon verkettet.
**Bewertung:** Die Ausführung scheint teilweise fehlerhaft zu sein (`you must specify only one target host` deutet auf ein Problem mit der Verkettung hin), aber die SYN-Pakete wurden wahrscheinlich trotzdem gesendet. Dieser Schritt ist redundant, da `knock` bereits verwendet wurde.
**Empfehlung (Pentester):** Verwenden Sie `knock` oder führen Sie die `hping3`-Befehle einzeln nacheinander aus, um Fehler zu vermeiden.
**Empfehlung (Admin):** Keine.
Starting Nmap 7.92 ( https://nmap.org ) at 2022-10-14 23:31 CEST Nmap scan report for susan.eighty.hmv (192.168.2.150) <-- Neuer Hostname? --> Host is up (0.00014s latency). Not shown: 997 closed tcp ports (reset) PORT STATE SERVICE 22/tcp open ssh 70/tcp open gopher 80/tcp open http <<----- open <-<<
**Analyse:** Ein einfacher Nmap-Scan (nur die Standard-Ports) wird auf das Ziel ausgeführt, nachdem die Knocking-Sequenz gesendet wurde.
**Bewertung:** Erfolg! Port 80 wird nun als `open` angezeigt. Das Port Knocking hat funktioniert und die Firewall für Port 80 geöffnet. Interessanterweise löst die IP nun auch zum Hostnamen `susan.eighty.hmv` auf – ein Hinweis auf einen weiteren VHost oder Benutzernamen.
**Empfehlung (Pentester):** Fügen Sie `susan.eighty.hmv` zu `/etc/hosts` hinzu. Untersuchen Sie nun den Inhalt auf Port 80 (`curl http://susan.eighty.hmv` oder `http://192.168.2.150`).
**Empfehlung (Admin):** Überprüfen Sie die Sicherheit der Port-Knocking-Implementierung.
**Analyse:** Untersuchung des nun offenen Webservers auf Port 80, was zur Entdeckung von Zugangsdaten und einer 2FA-Anforderung führt.
Susan Webpage
**Analyse:** Der Inhalt des Verzeichnisses `/web/` auf dem (vermuteten) VHost `susan.eighty.hmv` wird abgerufen.
**Bewertung:** Eine einfache Seite mit dem Titel "Susan Webpage" und einem Kommentar. Bestätigt den VHost und gibt einen potenziellen Benutzernamen (`susan`).
**Empfehlung (Pentester):** Führen Sie Gobuster auf `http://susan.eighty.hmv/` und `http://susan.eighty.hmv/web/` durch.
**Empfehlung (Admin):** Keine.
[...] http://susan.eighty.hmv/index.html (Status: 200) [Size: 16] <-- Leere Indexseite --> http://susan.eighty.hmv/web (Status: 301) [Size: 185] [--> http://susan.eighty.hmv/web/] http://susan.eighty.hmv/robots.txt (Status: 200) [Size: 18] http://susan.eighty.hmv/web/index.html (Status: 200) [Size: 40] <-- Susan Webpage --> http://susan.eighty.hmv/web/lostpasswd.txt (Status: 200) [Size: 50] <-- Passwortdatei! --> [...]
**Analyse:** Gobuster wird auf den VHost `susan.eighty.hmv` angesetzt.
**Bewertung:** Findet das `/web`-Verzeichnis und darin die Datei `lostpasswd.txt`. Dies ist ein kritischer Fund.
**Empfehlung (Pentester):** Rufen Sie `http://susan.eighty.hmv/web/lostpasswd.txt` ab.
**Empfehlung (Admin):** **Niemals Passwortdateien im Web-Root speichern!**
8ycrois-tu0 + /home/susan/secret/.google-auth.txt
**Analyse:** Der Inhalt von `lostpasswd.txt` wird abgerufen.
**Bewertung:** Enthält zwei Teile: * Ein Passwort: `8ycrois-tu0`. * Einen Pfad zu einer Google Authenticator-Datei: `/home/susan/secret/.google-auth.txt`. Dies deutet stark darauf hin, dass der Benutzer `susan` das Passwort `8ycrois-tu0` verwendet und zusätzlich eine Zwei-Faktor-Authentifizierung (2FA) mittels Google Authenticator (TOTP - Time-based One-Time Password) für den SSH-Login benötigt.
**Empfehlung (Pentester):** Der Pfad zur `.google-auth.txt` ist nicht direkt zugänglich. Versuchen Sie den SSH-Login als `susan` mit dem Passwort `8ycrois-tu0`. Der Server wird dann nach dem TOTP-Code fragen. Um diesen zu generieren:
1. Nutzen Sie eine LFI oder einen anderen Weg (falls vorhanden), um `/home/susan/secret/.google-auth.txt` auszulesen. Diese Datei enthält den TOTP-Secret-Key.
2. Importieren Sie diesen Secret Key in eine Authenticator-App (Google Authenticator, Authy, etc.) oder ein Kommandozeilentool (`oathtool`).
3. Geben Sie den aktuell generierten 6-stelligen Code während des SSH-Logins ein.
**Empfehlung (Admin):** Speichern Sie Passwörter und Hinweise auf 2FA-Secrets nicht in Web-Verzeichnissen. Schützen Sie die `.google-auth.txt`-Datei mit restriktiven Berechtigungen (`chmod 400`).
2GN7KARBONVR55R7SP3UZPN3ZM <-- TOTP Secret Key! --> " RATE_LIMIT 3 30 " WINDOW_SIZE 17 " DISALLOW_REUSE " TOTP_AUTH 71293338 48409754 27074208 60216448 17908010 <-- Recovery Codes -->
**Analyse:** Es wird versucht, über einen Path Traversal (`../`) auf die Datei `/secret/.google-auth.txt` zuzugreifen, relativ zum `/web`-Verzeichnis. (*Anmerkung: Ob dies tatsächlich so funktioniert hat oder ob ein anderer LFI-Vektor genutzt wurde, ist unklar, aber das Ergebnis ist entscheidend.*)
**Bewertung:** Erfolg! Der Inhalt der `.google-auth.txt`-Datei wird preisgegeben: * `2GN7KARBONVR55R7SP3UZPN3ZM`: Dies ist der Base32-kodierte Secret Key für den TOTP-Generator. * Die folgenden Zeilen sind Konfigurationsparameter und Recovery-Codes für Google Authenticator.
**Empfehlung (Pentester):** Importieren Sie den Secret Key `2GN7KARBONVR55R7SP3UZPN3ZM` in Ihre Authenticator App/Tool (fügen Sie ein Konto für "susan@eighty.hmv" hinzu). Versuchen Sie nun den SSH-Login mit Passwort `8ycrois-tu0` und dem aktuell generierten TOTP-Code.
**Empfehlung (Admin):** Beheben Sie die Schwachstelle, die das Auslesen der `.google-auth.txt` ermöglichte (Path Traversal?). Sichern Sie die Datei mit `chmod 400`.
**Analyse:** Durchführung des SSH-Logins mit dem gefundenen Passwort und dem generierten TOTP-Code.
Man muss den namen susan als Kontoname in die Google Authenticator App eingeben,
dann bekommt man von der App ein Zeitbasierten Code, jetzt per ssh bei ssh susan@eighty.hmv
anmelden. Das Kennwort: 8ycrois-tu0
und den Google-Code: 955 712 (Beispielcode)
der angezeigt wurde in der App, der Google-Code den ich hier verwende ändert sich natürlich beim
nächsten mal...
**Analyse:** Notiz des Pentesters, die den Prozess erklärt: Secret Key in Authenticator App eingeben, Passwort (`8ycrois-tu0`) und den aktuellen TOTP-Code (hier beispielhaft `955712`) beim SSH-Login verwenden.
**Bewertung:** Korrekte Vorgehensweise für den Login mit Passwort + TOTP.
(susan@eighty.hmv) Password: ******** (8ycrois-tu0 eingegeben) (susan@eighty.hmv) Verification code: XXXXXX (Aktueller TOTP-Code eingegeben) Linux eighty 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64 [...] Last login: Wed Apr 7 07:05:11 2021 susan@eighty:~$ <-- Login erfolgreich! -->
=
**Analyse:** SSH-Login als `susan` mit dem Passwort `8ycrois-tu0` und dem korrekten, aktuell generierten TOTP-Code.
**Bewertung:** Initialer Zugriff erfolgreich erlangt!
**Empfehlung (Pentester):** User-Flag lesen, `sudo -l` / `doas -l` prüfen.
**Empfehlung (Admin):** Passwort ändern, LFI/Path Traversal beheben.
flag.sh secret user.txt web
hmv8use0red
<-- User Flag -->
**Analyse:** Im Home-Verzeichnis von `susan` wird die `user.txt` gefunden und gelesen.
**Bewertung:** User-Flag (`hmv8use0red`) erhalten.
**Analyse:** Als `susan` wird nach Wegen zur Root-Eskalation gesucht.
[...] 287132 44 -rwsr-xr-x 1 root root 42456 Apr 7 2021 /usr/local/bin/doas <<<----< SUID Root! [...]
#
sudo:<-- sudo nicht gefunden -->
**Analyse:** Die Suche nach SUID-Dateien findet `/usr/local/bin/doas`. `doas` ist eine Alternative zu `sudo`. Die Suche nach `sudo` bleibt erfolglos.
**Bewertung:** `doas` (als SUID root) ist der primäre Kandidat für die Privilegieneskalation.
**Empfehlung (Pentester):** Überprüfen Sie die `doas`-Konfigurationsdatei (typischerweise `/etc/doas.conf` oder `/usr/local/etc/doas.conf`), um zu sehen, welche Befehle `susan` ausführen darf.
**Empfehlung (Admin):** Konfigurieren Sie `doas` nach dem Prinzip der geringsten Rechte.
/usr/local/etc/doas.conf
permit nolog susan as root cmd gopher
<-- Kritische Regel! -->
**Analyse:** Die `doas`-Konfigurationsdatei wird gefunden und ausgelesen.
**Bewertung:** Eine kritische Regel wird gefunden: `permit nolog susan as root cmd gopher`. Dies bedeutet, der Benutzer `susan` darf den Befehl `gopher` als `root` ohne Passwortabfrage (`nolog`) ausführen.
**Empfehlung (Pentester):** Nutzen Sie diese Regel. Gopher-Clients erlauben oft das Ausführen von Shell-Befehlen durch Eingabe von `!` oder `$` (je nach Client). Führen Sie `doas gopher` aus und versuchen Sie, eine Shell zu spawnen.
**Empfehlung (Admin):** **Entfernen Sie diese `doas`-Regel!** Die Ausführung von Clients wie `gopher`, `ftp`, `telnet` etc. als Root ist extrem gefährlich, da sie oft Shell-Escape-Funktionen bieten.
Welcome to our old world.
--> [2] Connection
Press ? for Help, q to Quit
<-- Gopher Client Interface -->
gopher://127.0.0.1
Welcome to our old world.
--> [2] Connection
Press ? for Help, q to Quit
ein seltsamer Editor öffnet sich...
hier einfach ein $ eingeben und ENTER drücken dann ist man automatisch root...
**Analyse:** 1. `doas gopher gopher://127.0.0.1` wird ausgeführt. Der Gopher-Client startet als Root. 2. Die Zeile `Password: 8ycrois-tu0` scheint ein Fehler im Log zu sein, der Gopher-Client fragt hier kein Passwort. 3. Innerhalb des Gopher-Clients wird das Zeichen `$` eingegeben und Enter gedrückt. 4. Dies führt dazu, dass der Benutzer eine Root-Shell erhält (`root@eighty:/home/susan#`).
**Bewertung:** Root-Zugriff erfolgreich erlangt! Die unsichere `doas`-Regel erlaubte die Ausführung des Gopher-Clients als Root. Dieser spezifische Gopher-Client hat offenbar eine Funktion (oder einen Bug), die es ermöglicht, durch Eingabe von `$` eine Shell zu spawnen. Da der Client als Root lief, ist die resultierende Shell ebenfalls eine Root-Shell.
**Empfehlung (Pentester):** Führen Sie `id` aus. Lesen Sie die Root-Flag.
**Empfehlung (Admin):** Entfernen Sie die unsichere `doas`-Regel für `gopher`.
**Kurzbeschreibung:** Der Benutzer `susan` hat durch eine Fehlkonfiguration in `/usr/local/etc/doas.conf` das Recht, den Befehl `/usr/bin/gopher` (oder den entsprechenden Pfad zum Gopher-Client) als `root` ohne Passwort auszuführen (`permit nolog susan as root cmd gopher`). Dieser spezifische Gopher-Client verfügt über eine undokumentierte Funktion oder einen Bug, der es erlaubt, durch die Eingabe des Zeichens `$` eine interaktive System-Shell zu starten. Da der Gopher-Client über `doas` mit Root-Privilegien gestartet wird, wird auch die resultierende Shell mit Root-Rechten ausgeführt.
**Voraussetzungen:** Zugriff als Benutzer `susan`, unsichere `doas`-Konfiguration, installierter Gopher-Client mit Shell-Escape-Möglichkeit.
**Schritt-für-Schritt-Anleitung:**
**Erwartetes Ergebnis:** Eine interaktive Root-Shell wird gestartet.
**Beweismittel:** Die `doas.conf`-Regel und die erfolgreiche Shell-Ausführung im Log.
**Risikobewertung:** Hoch. Erlaubt einem Benutzer mit dieser `doas`-Regel die vollständige Übernahme des Systems.
**Empfehlungen:** Entfernen Sie die unsichere `doas`-Regel. Vergeben Sie niemals `doas`/`sudo`-Rechte für interaktive Programme, die Shell-Escapes ermöglichen könnten (Editoren, Pager, Netzwerk-Clients etc.), es sei denn, sie sind speziell gehärtet oder eingeschränkt.
**Analyse:** Aus der Root-Shell werden die Flags gesucht und ausgelesen.
**Bewertung:** User-Flag.
**Bewertung:** Root-Flag.